// unordered_map experimental header
#pragma once
#ifndef _EXPERIMENTAL_UNORDERED_MAP_
#define _EXPERIMENTAL_UNORDERED_MAP_
#ifndef RC_INVOKED

#include <experimental/xutility>
#include <unordered_map>

#pragma pack(push, _CRT_PACKING)
#pragma warning(push, _STL_WARNING_LEVEL)
#pragma warning(disable : _STL_DISABLED_WARNINGS)
_STL_DISABLE_CLANG_WARNINGS
#pragma push_macro("new")
#undef new

_STD_BEGIN
namespace experimental {
    inline namespace fundamentals_v2 {

        // FUNCTION TEMPLATE erase_if
        template <class _Kty, class _Ty, class _Hasher, class _Keyeq, class _Alloc, class _Pr>
        inline void erase_if(unordered_map<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>& _Cont,
            _Pr _Pred) { // erase each element satisfying _Pred
            _Erase_nodes_if(_Cont, _Pass_fn(_Pred));
        }

        template <class _Kty, class _Ty, class _Hasher, class _Keyeq, class _Alloc, class _Pr>
        inline void erase_if(unordered_multimap<_Kty, _Ty, _Hasher, _Keyeq, _Alloc>& _Cont,
            _Pr _Pred) { // erase each element satisfying _Pred
            _Erase_nodes_if(_Cont, _Pass_fn(_Pred));
        }

    } // namespace fundamentals_v2
} // namespace experimental
_STD_END

#pragma pop_macro("new")
_STL_RESTORE_CLANG_WARNINGS
#pragma warning(pop)
#pragma pack(pop)

#endif // RC_INVOKED
#endif // _EXPERIMENTAL_UNORDERED_MAP_

/*
 * Copyright (c) by P.J. Plauger. All rights reserved.
 * Consult your license regarding permissions and restrictions.
V6.50:0009 */
